/**
 * String.js
 * 常用字符操作函数、
 * @author HLonlin <1021944439@qq.com>
 */
const string = {
  stringify: function (obj, sep, eq) {
    // qs.stringify
    sep = sep || '&'
    eq = eq || '='
    let str = ''
    for (let k in obj) {
      str += k + eq + unescape(obj[k]) + sep
    }
    return str.slice(0, -1)
  },

  parse: function (str) {
    // qs.parse
    let obj = {}
    let strs = str.split('&')
    for (let i = 0; i < strs.length; i++) {
      let index = strs[i].indexOf('=')
      obj[strs[i].slice(0, index)] = unescape(strs[i].slice(index + 1))
    }
    return obj
  },

  getRequest: function () {
    // 解析url地址
    const that = this
    let url = location.search // 获取url中"?"符后的字串
    if (url.indexOf('?') !== -1) {
      let str = url.substr(1)
      return that.parse(str)
    }
  },

  getUrlParam: function (name) {
    // 获取指定参数
    let reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)') // 构造一个含有目标参数的正则表达式对象
    let r = window.location.search.substr(1).match(reg) // 匹配目标参数
    if (r != null) return unescape(r[2])
    return null // 返回参数值
  },

  // 10位随机字符串 - Math.random() 生成 [0, 1) 的数，也就是 0.123312之类的，number.toString转换成36进制，按MDN的说法，36进制转换包含了字母 a~z 和 数字0~9，生成的是 0.89kjna21sa 类似这样的，所以要截取小数部分，即从索引 2 开始截取10个字符就是我们想要的随机字符串
  randomStr: function () {
    return Math.random()
      .toString(36)
      .substr(2, 10)
  },
  /**
   * 返回一个随机的颜色字符串
   * @returns {string}
   */
  getRandomColor: function () {
    return (
      '#' +
      Math.floor(Math.random() * 0xffffff)
        .toString(16)
        .padEnd(6, '0')
    )
  }
}
export default string